//
// Source code recreated from a .class file by IntelliJ IDEA
// (powered by FernFlower decompiler)
//

package com.itheima.pinda.authority.dto.auth;

import com.itheima.pinda.vo.base.entity.SuperEntity;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.io.Serializable;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import org.hibernate.validator.constraints.Length;

@ApiModel(
        value = "MenuUpdateDTO",
        description = "菜单"
)
public class MenuUpdateDTO implements Serializable {
    private static final long serialVersionUID = 1L;
    @ApiModelProperty("主键")
    @NotNull(
            message = "id不能为空",
            groups = {SuperEntity.Update.class}
    )
    private Long id;
    @ApiModelProperty("菜单名称")
    @NotEmpty(
            message = "菜单名称不能为空"
    )
    @Length(
            max = 20,
            message = "菜单名称长度不能超过20"
    )
    private String name;
    @ApiModelProperty("功能描述")
    @Length(
            max = 200,
            message = "功能描述长度不能超过200"
    )
    private String describe;
    @ApiModelProperty("是否公开菜单")
    private Boolean isPublic;
    @ApiModelProperty("对应路由path")
    @Length(
            max = 255,
            message = "对应路由path长度不能超过255"
    )
    private String path;
    @ApiModelProperty("对应路由组件component")
    @Length(
            max = 255,
            message = "对应路由组件component长度不能超过255"
    )
    private String component;
    @ApiModelProperty("是否启用")
    private Boolean isEnable;
    @ApiModelProperty("排序")
    private Integer sortValue;
    @ApiModelProperty("菜单图标")
    @Length(
            max = 255,
            message = "菜单图标长度不能超过255"
    )
    private String icon;
    @ApiModelProperty("菜单分组")
    @Length(
            max = 20,
            message = "菜单分组长度不能超过20"
    )
    private String group;
    @ApiModelProperty("父级菜单id")
    private Long parentId;

    public static MenuUpdateDTOBuilder builder() {
        return new MenuUpdateDTOBuilder();
    }

    public Long getId() {
        return this.id;
    }

    public String getName() {
        return this.name;
    }

    public String getDescribe() {
        return this.describe;
    }

    public Boolean getIsPublic() {
        return this.isPublic;
    }

    public String getPath() {
        return this.path;
    }

    public String getComponent() {
        return this.component;
    }

    public Boolean getIsEnable() {
        return this.isEnable;
    }

    public Integer getSortValue() {
        return this.sortValue;
    }

    public String getIcon() {
        return this.icon;
    }

    public String getGroup() {
        return this.group;
    }

    public Long getParentId() {
        return this.parentId;
    }

    public MenuUpdateDTO setId(final Long id) {
        this.id = id;
        return this;
    }

    public MenuUpdateDTO setName(final String name) {
        this.name = name;
        return this;
    }

    public MenuUpdateDTO setDescribe(final String describe) {
        this.describe = describe;
        return this;
    }

    public MenuUpdateDTO setIsPublic(final Boolean isPublic) {
        this.isPublic = isPublic;
        return this;
    }

    public MenuUpdateDTO setPath(final String path) {
        this.path = path;
        return this;
    }

    public MenuUpdateDTO setComponent(final String component) {
        this.component = component;
        return this;
    }

    public MenuUpdateDTO setIsEnable(final Boolean isEnable) {
        this.isEnable = isEnable;
        return this;
    }

    public MenuUpdateDTO setSortValue(final Integer sortValue) {
        this.sortValue = sortValue;
        return this;
    }

    public MenuUpdateDTO setIcon(final String icon) {
        this.icon = icon;
        return this;
    }

    public MenuUpdateDTO setGroup(final String group) {
        this.group = group;
        return this;
    }

    public MenuUpdateDTO setParentId(final Long parentId) {
        this.parentId = parentId;
        return this;
    }

    public MenuUpdateDTO() {
    }

    public MenuUpdateDTO(final Long id, final String name, final String describe, final Boolean isPublic, final String path, final String component, final Boolean isEnable, final Integer sortValue, final String icon, final String group, final Long parentId) {
        this.id = id;
        this.name = name;
        this.describe = describe;
        this.isPublic = isPublic;
        this.path = path;
        this.component = component;
        this.isEnable = isEnable;
        this.sortValue = sortValue;
        this.icon = icon;
        this.group = group;
        this.parentId = parentId;
    }

    public String toString() {
        return "MenuUpdateDTO(super=" + super.toString() + ", id=" + this.getId() + ", name=" + this.getName() + ", describe=" + this.getDescribe() + ", isPublic=" + this.getIsPublic() + ", path=" + this.getPath() + ", component=" + this.getComponent() + ", isEnable=" + this.getIsEnable() + ", sortValue=" + this.getSortValue() + ", icon=" + this.getIcon() + ", group=" + this.getGroup() + ", parentId=" + this.getParentId() + ")";
    }

    public boolean equals(final Object o) {
        if (o == this) {
            return true;
        } else if (!(o instanceof MenuUpdateDTO)) {
            return false;
        } else {
            MenuUpdateDTO other = (MenuUpdateDTO)o;
            if (!other.canEqual(this)) {
                return false;
            } else {
                label143: {
                    Object this$id = this.getId();
                    Object other$id = other.getId();
                    if (this$id == null) {
                        if (other$id == null) {
                            break label143;
                        }
                    } else if (this$id.equals(other$id)) {
                        break label143;
                    }

                    return false;
                }

                Object this$name = this.getName();
                Object other$name = other.getName();
                if (this$name == null) {
                    if (other$name != null) {
                        return false;
                    }
                } else if (!this$name.equals(other$name)) {
                    return false;
                }

                Object this$describe = this.getDescribe();
                Object other$describe = other.getDescribe();
                if (this$describe == null) {
                    if (other$describe != null) {
                        return false;
                    }
                } else if (!this$describe.equals(other$describe)) {
                    return false;
                }

                label122: {
                    Object this$isPublic = this.getIsPublic();
                    Object other$isPublic = other.getIsPublic();
                    if (this$isPublic == null) {
                        if (other$isPublic == null) {
                            break label122;
                        }
                    } else if (this$isPublic.equals(other$isPublic)) {
                        break label122;
                    }

                    return false;
                }

                label115: {
                    Object this$path = this.getPath();
                    Object other$path = other.getPath();
                    if (this$path == null) {
                        if (other$path == null) {
                            break label115;
                        }
                    } else if (this$path.equals(other$path)) {
                        break label115;
                    }

                    return false;
                }

                Object this$component = this.getComponent();
                Object other$component = other.getComponent();
                if (this$component == null) {
                    if (other$component != null) {
                        return false;
                    }
                } else if (!this$component.equals(other$component)) {
                    return false;
                }

                Object this$isEnable = this.getIsEnable();
                Object other$isEnable = other.getIsEnable();
                if (this$isEnable == null) {
                    if (other$isEnable != null) {
                        return false;
                    }
                } else if (!this$isEnable.equals(other$isEnable)) {
                    return false;
                }

                label94: {
                    Object this$sortValue = this.getSortValue();
                    Object other$sortValue = other.getSortValue();
                    if (this$sortValue == null) {
                        if (other$sortValue == null) {
                            break label94;
                        }
                    } else if (this$sortValue.equals(other$sortValue)) {
                        break label94;
                    }

                    return false;
                }

                label87: {
                    Object this$icon = this.getIcon();
                    Object other$icon = other.getIcon();
                    if (this$icon == null) {
                        if (other$icon == null) {
                            break label87;
                        }
                    } else if (this$icon.equals(other$icon)) {
                        break label87;
                    }

                    return false;
                }

                Object this$group = this.getGroup();
                Object other$group = other.getGroup();
                if (this$group == null) {
                    if (other$group != null) {
                        return false;
                    }
                } else if (!this$group.equals(other$group)) {
                    return false;
                }

                Object this$parentId = this.getParentId();
                Object other$parentId = other.getParentId();
                if (this$parentId == null) {
                    if (other$parentId != null) {
                        return false;
                    }
                } else if (!this$parentId.equals(other$parentId)) {
                    return false;
                }

                return true;
            }
        }
    }

    protected boolean canEqual(final Object other) {
        return other instanceof MenuUpdateDTO;
    }

    public int hashCode() {
        boolean PRIME = true;
        int result = 1;
        Object $id = this.getId();
        result = result * 59 + ($id == null ? 43 : $id.hashCode());
        Object $name = this.getName();
        result = result * 59 + ($name == null ? 43 : $name.hashCode());
        Object $describe = this.getDescribe();
        result = result * 59 + ($describe == null ? 43 : $describe.hashCode());
        Object $isPublic = this.getIsPublic();
        result = result * 59 + ($isPublic == null ? 43 : $isPublic.hashCode());
        Object $path = this.getPath();
        result = result * 59 + ($path == null ? 43 : $path.hashCode());
        Object $component = this.getComponent();
        result = result * 59 + ($component == null ? 43 : $component.hashCode());
        Object $isEnable = this.getIsEnable();
        result = result * 59 + ($isEnable == null ? 43 : $isEnable.hashCode());
        Object $sortValue = this.getSortValue();
        result = result * 59 + ($sortValue == null ? 43 : $sortValue.hashCode());
        Object $icon = this.getIcon();
        result = result * 59 + ($icon == null ? 43 : $icon.hashCode());
        Object $group = this.getGroup();
        result = result * 59 + ($group == null ? 43 : $group.hashCode());
        Object $parentId = this.getParentId();
        result = result * 59 + ($parentId == null ? 43 : $parentId.hashCode());
        return result;
    }

    public static class MenuUpdateDTOBuilder {
        private Long id;
        private String name;
        private String describe;
        private Boolean isPublic;
        private String path;
        private String component;
        private Boolean isEnable;
        private Integer sortValue;
        private String icon;
        private String group;
        private Long parentId;

        MenuUpdateDTOBuilder() {
        }

        public MenuUpdateDTOBuilder id(final Long id) {
            this.id = id;
            return this;
        }

        public MenuUpdateDTOBuilder name(final String name) {
            this.name = name;
            return this;
        }

        public MenuUpdateDTOBuilder describe(final String describe) {
            this.describe = describe;
            return this;
        }

        public MenuUpdateDTOBuilder isPublic(final Boolean isPublic) {
            this.isPublic = isPublic;
            return this;
        }

        public MenuUpdateDTOBuilder path(final String path) {
            this.path = path;
            return this;
        }

        public MenuUpdateDTOBuilder component(final String component) {
            this.component = component;
            return this;
        }

        public MenuUpdateDTOBuilder isEnable(final Boolean isEnable) {
            this.isEnable = isEnable;
            return this;
        }

        public MenuUpdateDTOBuilder sortValue(final Integer sortValue) {
            this.sortValue = sortValue;
            return this;
        }

        public MenuUpdateDTOBuilder icon(final String icon) {
            this.icon = icon;
            return this;
        }

        public MenuUpdateDTOBuilder group(final String group) {
            this.group = group;
            return this;
        }

        public MenuUpdateDTOBuilder parentId(final Long parentId) {
            this.parentId = parentId;
            return this;
        }

        public MenuUpdateDTO build() {
            return new MenuUpdateDTO(this.id, this.name, this.describe, this.isPublic, this.path, this.component, this.isEnable, this.sortValue, this.icon, this.group, this.parentId);
        }

        public String toString() {
            return "MenuUpdateDTO.MenuUpdateDTOBuilder(id=" + this.id + ", name=" + this.name + ", describe=" + this.describe + ", isPublic=" + this.isPublic + ", path=" + this.path + ", component=" + this.component + ", isEnable=" + this.isEnable + ", sortValue=" + this.sortValue + ", icon=" + this.icon + ", group=" + this.group + ", parentId=" + this.parentId + ")";
        }
    }
}
